package com.tbit.main.dao.core;

import com.tbit.main.pojo.GeoreGion;
import com.tbit.main.pojo.GeoreGionMachineCount;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author LMY
 * @create 2020-11-23 14:38
 * 围栏分区
 */
public interface GeoreGionDao {
    /**
     * 添加
     *
     * @param georeGion
     */
    void insert(GeoreGion georeGion);

    /**
     * 更新
     *
     * @param georeGion
     */
    void update(GeoreGion georeGion);

    /**
     * 删除
     *
     * @param regionId
     */
    void delete(Integer regionId);

    /**
     * 根据分区id查询
     *
     * @param regionId
     * @return
     */
    GeoreGion getByRegionId(Integer regionId);

    /**
     * 根据分区ids查询
     *
     * @param regionIds
     * @return
     */
    List<GeoreGion> getByRegionIds(@Param("regionIds") String regionIds);

    /**
     * 根据平台账户id查询
     *
     * @param accountId
     * @return
     */
    List<GeoreGion> getByAccountId(Integer accountId);

    /**
     * 根据平台账户ids查询
     *
     * @param accountIds
     * @return
     */
    List<GeoreGion> getByAccountIds(@Param("accountIds") String accountIds);

    /**
     * 根据运维人员id查询
     *
     * @param accountUserId
     * @return
     */
    List<Integer> getByAccountUserId(Integer accountUserId);

    /**
     * 根据运维人员id查询
     *
     * @param accountUserId
     * @return
     */
    List<GeoreGion> getAccountUserId(Integer accountUserId);

    /**
     * 根据运维人员ids查询
     *
     * @param accountUserIds
     * @return
     */
    List<Map<String, Object>> getAccountUserIds(@Param("accountUserIds") String accountUserIds);

    /**
     * 根据运维人员ids查询
     *
     * @param regionId
     * @return
     */
    List<Map<String, Object>> getRegionIdsUserId(@Param("regionId") String regionId);

    /**
     * 查询所有
     *
     * @return
     */
    List<GeoreGion> getAll();

    /**
     * 查询所有分区，区域id
     *
     * @return
     */
    List<Integer> getAccountId();

    /**
     * 查询所有分区，区域id
     *
     * @return
     */
    List<Integer> getAccountIdUpdate(String updateTime);

    /**
     * 查询所有分区，区域id
     *
     * @return
     */
    List<Integer> getRegionId();

    /**
     * 统计站点投放车辆数量
     *
     * @param accountId
     * @return
     */
    List<GeoreGionMachineCount> groupByGeoreGion(Integer accountId);

    /**
     * 根据车辆id和人员id
     *
     * @param params
     * @return
     */
    Integer getMachineIdUserId(Map<String, Object> params);
}
